package com.higgins.client.agentapp.service;

import java.util.List;

import com.google.gwt.user.client.rpc.AsyncCallback;
import com.higgins.client.agentapp.datamodel.AdvertisedJobDTO;
import com.higgins.client.agentapp.datamodel.AgencyDTO;
import com.higgins.client.agentapp.datamodel.AgentDTO;
import com.higgins.client.agentapp.datamodel.CorrespondenceDTO;
import com.higgins.client.agentapp.datamodel.JobSiteDTO;
import com.higgins.client.dataModel.CoveringLetterDTO;
import com.higgins.client.dataModel.LawFirmDTO;
import com.higgins.client.dataModel.RecipientDTO;
import com.higgins.client.dataModel.RegionDTO;
import com.higgins.client.dataModel.SectorDTO;
import com.higgins.client.dataModel.StrategyDTO;
import com.higgins.client.dataModel.StrategyRecipientCountDTO;
import com.higgins.client.dataModel.StrategyRecipientDTO;

/**
 * The async counterpart of <code>GreetingService</code>.
 */
public interface AgentAppServiceAsync {
	void retrieveJobSites(AsyncCallback<List<JobSiteDTO>> callback) throws IllegalArgumentException;
	void updateJobSite(JobSiteDTO dto, AsyncCallback<String> callback) throws IllegalArgumentException;
	void retrieveAgencys(AsyncCallback<List<AgencyDTO>> callback) throws IllegalArgumentException;
	void updateAgency(AgencyDTO dto, AsyncCallback<String> callback) throws IllegalArgumentException;
	void retrieveAgents(Long id, AsyncCallback<List<AgentDTO>> callback) throws IllegalArgumentException;
	void updateAgent(AgentDTO dto, AsyncCallback<String> callback) throws IllegalArgumentException;
	void retrieveAdvertisedJobs(AsyncCallback<List<AdvertisedJobDTO>> callback) throws IllegalArgumentException;
	void retrieveAdvertisedJobsByAgencyId(Long agencyId, AsyncCallback<List<AdvertisedJobDTO>> callback) throws IllegalArgumentException;
	void retrieveAdvertisedJobsByAgentId(Long agentId, AsyncCallback<List<AdvertisedJobDTO>> callback) throws IllegalArgumentException;
	void updateAdvertisedJob(AdvertisedJobDTO dto, AsyncCallback<String> callback) throws IllegalArgumentException;
    void deleteAdvertisedJob(Long  advertisedJobId, AsyncCallback<Boolean> callback) throws IllegalArgumentException;
	void retrieveCorrespondences(Long advertisedJobId, AsyncCallback<List<CorrespondenceDTO>> callback) throws IllegalArgumentException;
	void updateCorrespondence(CorrespondenceDTO dto, AsyncCallback<String> callback) throws IllegalArgumentException;
    void deleteCorrespondence(Long  correspondenceId, AsyncCallback<Boolean> callback) throws IllegalArgumentException;
}
